#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Módulos 
import sys, pygame 
from pygame.locals import *

from dao.AlumnosDao import AlumnosDao
from dao.EscuelasDao import EscuelasDao
from sync import sync

# Constantes

RES = 1
 
# Clases
# ---------------------------------------------------------------------

# ---------------------------------------------------------------------
 
# Funciones
# ---------------------------------------------------------------------
 
def load_image(filename, transparent=False):
        try: image = pygame.image.load(filename)
        except pygame.error, message:
                raise SystemExit, message
        image = pygame.transform.scale(image,(int(image.get_width()*RES),int(image.get_height()*RES)))
        image = image.convert()
        if transparent:
                color = image.get_at((0,0))
                image.set_colorkey(color, RLEACCEL)
        return image
 
def load_image_fondo(filename, color):
        try: image = pygame.image.load(filename)
        except pygame.error, message:
                raise SystemExit, message
        image = pygame.transform.scale(image,(int(image.get_width()*RES),int(image.get_height()*RES)))
        image = image.convert()
	image.set_colorkey(color, RLEACCEL)
        return image

def texto(texto, posx, posy, color=(255, 255, 255)):
	texto = unicode(texto, "UTF-8")
	fuente = pygame.font.Font( "fonts/arialbd.ttf", int(24*RES))
	salida = pygame.font.Font.render(fuente, texto, 1, color)
	salida_rect = salida.get_rect()
	salida_rect.centerx = posx
	salida_rect.centery = posy
	return salida, salida_rect

def textotls(texto, posx, posy, size = 20,color=(255, 255, 255)):
	texto = unicode(texto, "UTF-8")
	fuente = pygame.font.Font( "fonts//TRSL____.ttf", int(size*RES))
	salida = pygame.font.Font.render(fuente, texto, 1, color)
	salida_rect = salida.get_rect()
	salida_rect.centerx = posx
	salida_rect.centery = posy
	return salida, salida_rect

def textotlb(texto, posx, posy, size = 20,color=(255, 255, 255)):
	texto = unicode(texto, "UTF-8")
	fuente = pygame.font.Font( "fonts//TRSB____.ttf", int(size*RES))
	salida = pygame.font.Font.render(fuente, texto, 1, color)
	salida_rect = salida.get_rect()
	salida_rect.centerx = posx
	salida_rect.centery = posy
	return salida, salida_rect

def textodream(texto, posx, posy, size = 20,color=(255, 255, 255)):
	texto = unicode(texto, "UTF-8")
	fuente = pygame.font.Font( "fonts//justadream_solid.ttf", int(size*RES))
	salida = pygame.font.Font.render(fuente, texto, 1, color)
	salida_rect = salida.get_rect()
	salida_rect.centerx = posx
	salida_rect.centery = posy
	return salida, salida_rect

def texto_letra(texto, posx, posy, color=(255, 255, 255)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/justadream_solid.ttf", int(24*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect

def texto_titulo(texto, posx, posy, color=(255, 0, 0)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/justadream_solid.ttf", int(25*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect


def texto_subtitulo(texto, posx, posy, color=(255, 0, 0)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/TRSB____.ttf", int(27*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect

def texto_subtitulo_azul(texto, posx, posy, color=(50, 50, 255)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/TRSB____.ttf", int(23*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect

def texto_normal(texto, posx, posy, color=(0, 0, 0), tam=20):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/TRSL____.ttf", int(tam*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect

def texto_chico(texto, posx, posy, color=(0, 0, 0)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/ARIAL.ttf", int(12*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect

    
def texto_titulo_email(texto, posx, posy, color=(0, 0, 0)):
    #texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/ARIAL.ttf", int(25*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect    

def texto_cuerpo_email(texto, posx, posy, color=(0, 0, 0)):
    #texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/ARIAL.ttf", int(22*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect 
        
def texto_clase(texto, posx, posy, color=(0, 0, 0)):
    texto = unicode(texto, "UTF-8")
    fuente = pygame.font.Font( "fonts/TRSB____.ttf", int(14*RES))
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect    
 
###########################################
# Llamado a la persistencia del sistema
###########################################
def registrarAvance(idClase, idLeccion):
    adao = AlumnosDao()
    adao.guardarAlumnoLecciones(idClase, idLeccion)
    return True


def guardarDato(idClase, idLeccion, clave, valor):
    adao = AlumnosDao()
    adao.guardarDato(idClase, idLeccion, clave, valor)
    return True


def obtenerDato(idClase, idLeccion, clave):
    adao = AlumnosDao()
    return adao.obtenerDato(idClase, idLeccion, clave)


#Llama a obtenerDato pero si el resultado es None retorna una cadena vacia
def obtenerDatoString(idClase, idLeccion, clave):
    r = obtenerDato(idClase, idLeccion, clave)
    if r == None:
	return ''
    else:
	return r


def obtenerClasesHabilitadasXO():
    edao = EscuelasDao()
    return edao.obtenerClasesHabilitadas()


###################################
### ENCUESTAS
###################################
def registrarEncuesta(idencuesta, identificador, valor):
    adao = AlumnosDao()
    adao.guardarAlumnoEncuestas(idencuesta, identificador, valor)
    return True


def obtenerEncuesta(idencuesta, identificador):
    adao = AlumnosDao()
    r = adao.obtenerEncuesta(idencuesta, identificador)
    if (r == None): 
	return ''
    else:
	return r


###########################################
# Envio de datos de avance
###########################################
def enviarAvance():
    s = sync()
    s.registrarAlumno()
    s.registrarAlumnosClases()
    return "ok"


def obtenerEscuelas():
    s = sync()
    s.obtenerEscuelas()
    return "ok"


def obtenerClasesHabilitadas():
    s = sync()
    s.obtenerClasesHabilitadas()
    return "ok"

def enviarEncuestas():
    s = sync()
    s.registrarAlumno()
    s.registrarAlumnosEncuestas()
    return "ok"

def sincronizar():
    s = sync()
    s.sincronizar()


###########################################
## Utiles para formatear texto.
###########################################
class Parrafo():
	def __init__(self, lineas, cantMaxima, x, y ):
	    self.lineas = lineas
	    self.cantMaxima = cantMaxima
	    self.x = x
	    self.y = y


class BloqueTexto():
	def __init__(self, tamLetra=18):
	    self.parrafos = list()
	    self.tamLetra = tamLetra

	def agregarParrafo(self, textoCompleto, cantMaxima, x, y):
	    lineas = list()
	    seguir = True
		
	    while seguir == True:        
		if len(textoCompleto) <= cantMaxima:
			texto = textoCompleto
			seguir = False
		else:
			texto = textoCompleto[0:cantMaxima]
			nro = texto.rfind(" ")
			if nro <= 0 :
				nro = cantMaxima
			texto = texto[0:nro]
			textoCompleto = textoCompleto[nro:]
		lineas.append(texto)

	    self.parrafos.append( Parrafo(lineas, cantMaxima, x, y) )


	def obtener_gui(self, parrafosSeguidos=True):
	    ret_lineas = list()
	    ret_lineas_rect = list()
	    i = 0
	    for parrafo in self.parrafos:
		    if parrafosSeguidos == False : 
		    	i = 0
		 
		    for linea in parrafo.lineas:
			i= i + 1
			x = parrafo.x
			y = parrafo.y + (i*25)
			a, b = texto_normal(linea,  x * RES,  y * RES,  (0, 0, 0), self.tamLetra )
			ret_lineas.append(a)
			ret_lineas_rect.append(b)

	    return ret_lineas, ret_lineas_rect


	'''def obtener_gui_screen(self, parrafosSeguidos=True, screen=None):
	    ret_lineas = list()
	    ret_lineas_rect = list()
	    i = 0
	    for parrafo in self.parrafos:
		    if parrafosSeguidos == False : 
		    	i = 0
		 
		    for linea in parrafo.lineas:
			i= i + 1
			x = parrafo.x
			y = parrafo.y + (i*25)
			#print linea
			a, b = texto_normal(linea,  x * RES,  y * RES,  (0, 0, 0), self.tamLetra )
			screen.blit(a, b)
	'''
# ---------------------------------------------------------------------
 
def main():
	
	'''pygame.init()
	screen = pygame.display.set_mode((int(800*RES), int(520*RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()


	bt = BloqueTexto()
	bt.agregarParrafo("Para una prueba, este es un parrafo nuevo, punto aparte.", 25, 200, 300)
	bt.agregarParrafo("Este es el segundo parrafo nuevo, punto aparte.",25, 200, 300)'''
	
	print "INICIO"
	registrarEncuesta(1, "24", "Veinte y cuatro.")
	a = obtenerEncuesta(1, "24")
	print a
	print "FIN"

if __name__ == '__main__':
   main()

